#ifndef PONG_HEADER
# define PONG_HEADER

# define PONG_VITESSE_RAQUETTE 30
# define PONG_VITESSE_PUCK 30
# define PONG_V_X_DEPART 1.7
# define PONG_V_Y_DEPART 0.9
# define PONG_LARGEUR DEFAULT_SCREEN_SIZE_X-2
# define PONG_HAUTEUR 33
# define PONG_POS_TERRAIN_X 0
# define PONG_POS_TERRAIN_Y 4
# define PONG_POS_RAQU_X_1 PONG_POS_TERRAIN_X + 5
# define PONG_POS_RAQU_X_2 (PONG_POS_TERRAIN_X + PONG_LARGEUR - 5)
# define PONG_SIGNE_PUCK 'O'
# define PONG_PLEIN ACS_BLOCK
# define PONG_PERDU_1 1
# define PONG_PERDU_2 2
# define PONG_HAUT 1
# define PONG_BAS 2
# define PONG_STOP 0
# define PONG_MODIFIER_VECTEUR 0

typedef struct {
	int x;
	int y;
} Pong_pos;
typedef struct {
	float x;
	float y;
} Pong_vect;

void pong_menu(void);
void pong_man(void);
void pong_main(void);
void pong_init(void);
void pong_afficher(Pong_pos posPuck, int *score);
void pong_afficher_chiffre(Pong_pos pos, int chiffre);
void pong_afficher_vide(Pong_pos pos);
int pong_bouger_puck(Pong_vect *posPuck, int posRaqu1, int posRaqu2, Pong_vect *vDepl);
int pong_arrondi(double nombre);
int pong_recup_event(void);
void pong_bouger_raquettes(int sensRaqu1, int sensRaqu2, int *raquY1, int *raquY2);
Pong_pos pong_fpos_to_ipos(Pong_vect pos);
double pong_val_absolue(double nb);
void pong_afficher_victoire(int quiGagne);
void pong_menu_pong(int *difficulte, int *modeJeu);
int pong_action_IA(Pong_pos posPuck, int posRaquY, int force);
int pong_random_IA(int posRaquY, int bNew);
int pong_retour_centre_IA(Pong_pos posPuck, int posRaquY);
void pong_afficher_position(int modeJeu);

#endif
